perm filename DIPHON.SAI[5,ALS] blob
sn#001154 filedate 1972-01-07 generic text, type T, neo UTF8
00100 BEGIN "DIPHONE" COMMENT 09-SEP-71;
00200 COMMENT Reads disk file "PHON" containing words and phonetic
00300 transcriptions. Creates a disk file containing all words
00400 having a given diphone.
00500 ;
00600
00700 REQUIRE "MACROS[SYS,JKS]" SOURCE_FILE;
00800 REQUIRE "COMSUB.HDR[SYS,JKS]" SOURCE_FILE;
00900
01000 INTEGER BRK,EOF,I,L,COUNT,CHOICE,WORDNO;
01100 STRING TSTR,DPH1,DPH2,PH1,PH2,LIN,WORD,LIN1;
01200
01300 SETBR;
01400 OPEN(DSK,"DSK",1,2,0,120,BRK,EOF);
01500 OPEN(DSKO,"DSK",1,0,2,120,BRK,EOF);
01600 OPEN(TTY,"TTY",1,1,1,120,BRK,EOF);
01700
01800 CHOICE ← GETPARM("CHOICE",0);
01900 LOOKIN(DSK,TSTR←"PHON");
02000 DPH1 ← STRINGIN("First phoneme of diphone");
02100 IF EQU(DPH1,"#") THEN DPH1 ← "XX";
02200 DPH2 ← STRINGIN("Second phoneme of diphone");
02300 IF EQU(DPH2,"#") THEN DPH2 ← "XX";
02400 ENTEROUT(DSKO,TSTR←"D"&DPH1&DPH2&".LST");
02500 OUT(DSKO,DATIME("ALL")&CR&LF&LF&"Diphone: "&DPH1&"-"&DPH2&CR&LF&LF);
02600
02700 EOF ← FALSE; COUNT ← WORDNO ← 0;
02750
02800 WHILE ¬EOF DO
02900 BEGIN "READ"
03000 LIN ← INPUT(DSK,1);
03100 TSTR ← SCAN(LIN,6,BRK);
03200 IF TSTR≠NULL THEN BEGIN WORD ← TSTR; WORDNO ← WORDNO + 1 END;
03300 LIN1←WORD&TB&LIN;
03400 IF LIN[1 FOR 1]=TB THEN LIN←LIN[2 TO ∞];
03500 TSTR←SCAN(LIN,6,BRK);
03600 TSTR←SCAN(LIN,6,BRK);
03700 TSTR←SCAN(LIN,6,BRK);
03800 LIN←LIN&CR;
03900 BRK ← 0; PH1 ← "XX"; PH2 ← " ";
04000 WHILE (LENGTH(LIN)>0) AND ¬EQU(PH2,"XX") DO
04100 BEGIN
04200 IF BRK≠CR THEN PH2 ← SCAN(LIN,10,BRK)
04300 ELSE PH2 ← "XX";
04400 IF EQU(PH1,DPH1) AND EQU(PH2,DPH2) THEN
04500 BEGIN
04600 IF CHOICE THEN
04700 BEGIN
04800 OUT(TTY,CRLF&LIN1&" ");
04900 IF YESORNO(NULL) THEN
05000 BEGIN OUT(DSKO,LIN1&CRLF); COUNT←COUNT+1 END;
05100 END
05200 ELSE
05300 BEGIN OUT(DSKO,LIN1&CRLF); COUNT←COUNT+1; OUT(TTY," "&CVS(WORDNO)) END;
05400 DONE
05500 END;
05600 PH1←PH2;
05700 END;
05800 IF INCHRS=" " THEN
05900 BEGIN OUT(TTY," RUN ABORTED. "); DONE END; C SPACE STOPS RUN;
06000 END "READ";
06100
06200 CLOSE(DSKO);
06300 OUT(TTY,CRLF&"OUTPUT FILE: D"&DPH1&DPH2&".LST "&CVS(COUNT)&" WORDS. ");
06400
06500 END "DIPHONE";